luci-base: add odhcp6c stats to luci ucode
authorPaul Donald <[email protected]>
Mon, 8 Dec 2025 14:02:38 +0000 (15:02 +0100)
committerPaul Donald <[email protected]>
Mon, 8 Dec 2025 14:02:38 +0000 (15:02 +0100)
Provides odhcp6c statistics of DHCPv6 request and response traffic

Signed-off-by: Paul Donald <[email protected]>
modules/luci-base/root/usr/share/rpcd/ucode/luci

index c0ebc8cb2762ca827cd0037b3fd55bd098afb314..55a55726bfbf40460a88eb3c7699a82a5adce62b 100644 (file)
@@ -9,6 +9,7 @@ import { cursor } from 'uci';
 import { init_list, init_index, init_enabled, init_action, conntrack_list, process_list } from 'luci.sys';
 import { revision, branch } from 'luci.version';
 import { statvfs, uname } from 'luci.core';
+import { connect } from 'ubus';
 
 import timezones from 'luci.zoneinfo';
 
@@ -563,6 +564,7 @@ const methods = {
                        }
                }
        },
+
        getRealtimeStats: {
                args: { mode: 'interface', device: 'eth0' },
                call: function(request) {
@@ -652,6 +654,31 @@ const methods = {
 
                        return { result: ports };
                }
+       },
+
+       getOdhcp6cStats: {
+               call: function() {
+                       const ubus = connect();
+                       const devs = ubus.call('network.device', 'status');
+
+                       if (!devs)
+                               return false;
+
+                       const dev_stats = {};
+
+                       for (let dev in devs) {
+                               const m = ubus.call(`odhcp6c.${dev}`, 'get_statistics');
+
+                               // not all interfaces are exposed unless odhcp6c runs on it
+                               if (!m)
+                                       continue;
+
+                               push(dev_stats, dev);
+                               dev_stats[dev] = m;
+                       }
+
+                       return { result: dev_stats };
+               }
        }
 };